package com.weidong.poidemo.handler;

import com.weidong.poidemo.entity.PoiEntity;
import org.apache.poi.xssf.eventusermodel.XSSFSheetXMLHandler;
import org.apache.poi.xssf.usermodel.XSSFComment;

/**
 * @author weidong
 * @version 1.0
 * @date 2019/11/27 17:42
 * @description 自定义Sheet基于Sax的解析处理器
 */
public class SheetHandler implements XSSFSheetXMLHandler.SheetContentsHandler {


    /**
     * 封装实体对象
     * @param rowNum
     */
    private PoiEntity entity;

    /**
     * 开始解析第一行的时候触发
     * @param rowNum
     */
    @Override
    public void startRow(int rowNum) {
        if (rowNum >0 ) {
            entity = new PoiEntity();
          }
    }

    /**
     * 当结束某一行的时候处罚
     * @param rowNum
     */
    @Override
    public void endRow(int rowNum) {
        System.out.println(entity);
    }

    /**
     * 对行中的每一个表格进行处理
     * @param cellReference
     * @param formattedValue
     * @param comment
     */
    @Override
    public void cell(String cellReference, String formattedValue, XSSFComment comment) {
    if(entity != null) {
        switch (cellReference.substring(0, 1)) {
                case "A":
                    entity.setId(formattedValue);
                    break;
                case "B":
                    entity.setBreast(formattedValue);
                    break;
                case "C":
                    entity.setAdipocytes(formattedValue);
                    break;
                case "D":
                    entity.setNegative(formattedValue);
                    break;
                case "E":
                    entity.setStaining(formattedValue);
                    break;
                case "F":
                    entity.setSupportive(formattedValue);
                    break;
                default:
                    break;
            }
        }
    }

    /**
     * 处理头尾
     * @param text
     * @param isHeader
     * @param tagName
     */
    @Override
    public void headerFooter(String text, boolean isHeader, String tagName) {

    }
}
